var layerMasks;
function Ajax(url, param, type = 'post',isMsg = true) {
    // let pathname = window.location.pathname.split('.')[0];
    // let token,goUrl;
    // if(pathname == '/admin/index/index'){
    //     token = sessionStorage.getItem('adminToken');
    //     goUrl = '/admin/login/index'
    // }else{
    //     token = sessionStorage.getItem('cpsToken');
    //     goUrl = '/cps/login/index'
    // }
    if(url != '/cps/login/login' && url != '/admin/login/login'){
        if(token_time && new Date().getTime() >= token_time+expiration_time){
            jumpUrl(goUrl,true)
            return
        }
    }
    return new Promise((resolve, reject) =>{
        $.ajax({
            headers:{
                token
            },
            type,
            url,
            dataType: "json",
            data: param,
            success: function (result) {
                parent.layer.close(layerMasks)
                if(result.code === 101){
                    jumpUrl(goUrl,true)
                    return
                }else if (result.code === 200) {
                    resolve(result);
                } else {
                    if(isMsg){
                        layer.msg(result.message);
                    }
                    resolve(result);
                }
            },
            error: function (error) {
                parent.layer.close(layerMasks)
                layer.msg('请求失败，请稍后再试~');
                reject(error);
            }
        });
    });
}
/* 
    提交form表单
    addUrl:添加表单url
    editUrl:编辑表单url
    detailUrl:获取表单数据url
*/
function form_ajax(params){
    let {addUrl,editUrl,detailUrl,confirm = false,hasCallback = true} = params
    layui.use(["form", "layer"], function () {
        $ = layui.jquery;
        var form = layui.form,
            layer = layui.layer;
        let id = GetQueryString('id')
        if(id && detailUrl){
            // 获取表单详情 并赋值
            if(hasCallback){
                Ajax(detailUrl,{id},'get').then(result =>{
                    //formAjax 即 class="layui-form" 所在元素属性 lay-filter="" 对应的值
                    form.val("formAjax",result.data);
                });
            }
        }
        form.on('submit(submitData)', function(data){
            var formData = data.field;
            let url = id ? editUrl : addUrl;
            console.log(url);
            if(confirm){
                layer.confirm('确认此操作吗？', function () {
                    formReloadAjax(url,formData)
                });
            }else{
                formReloadAjax(url,formData)
            }
            return false
        });
    });
}
/* 
    DeleteAjax 表格删除
    url:数据接口
    params:参数
    fn:成功回调
*/
function DeleteAjax(url,params,id){
    AnyAjax('确认要删除吗？',url,params,id)
}
/* 
    ChangeAjax 表格状态切换
    url:数据接口
    params:参数
    fn:成功回调
*/
function ChangeAjax(url,params,id){
    AnyAjax('确认要修改吗？',url,params,id)
}

function msgAjax(url) {
    layer.confirm('确认执行此操作吗？', function () {
        Ajax(url).then(data =>{
            if (data.code === 200) {
                layer.msg(data.message, {
                    icon: 6,
                    time: 1000 
                });
            } else {
                layer.alert(data.message);
            }
        })
    });
}

/* 
    AnyAjax 表格提示操作
    url:数据接口
    params:参数
    fn:成功回调
*/
function AnyAjax(tip,url,params,id,mask){
    layui.use('table', function () {
        var table = layui.table;
        layer.confirm(tip, function () {
            Ajax(url,params).then(data =>{
                if (data.code === 200) {
                    layer.msg(data.message, {
                        icon: 6,
                        time: 2000 
                    },function(){
                        if(mask){
                            layer.close(mask)
                        }
                        table.reloadData(id)
                    });
                } else {
                    layer.alert(data.message);
                }
            })
        });
    });
}
/**
 * form表单 请求后关闭当前窗口并刷新
 * @method formReloadAjax
 * @param {String} url 请求地址
 * @param {Object} formData 请求参数
 */
function formReloadAjax(url,formData,mask){
    
    layerMasks = parent.layer.load(1, {
        shade: [0.4,'#000']
    });
    Ajax(url,formData).then(data =>{
        parent.layer.close(layerMasks)
        if (data.code === 200) {
            layer.msg(data.message, {
                icon: 6,
                time: 1000 
            }, function () {
                if(mask){
                    layer.close(mask)
                }else{
                    //关闭当前frame
                    x_admin_close();
                    // 可以对父窗口进行刷新
                    x_admin_father_reload();
                }
            });
        }
    });
}
/* 
    AnyAjax load请求
    url:数据接口
    params:参数
    fn:成功回调
*/
function LoadAjax(that,url,params){
    $(that).html('<div id="loading_icon"><i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i></div>合计')
    $("#loading_icon").show()
    Ajax(url,params).then(data =>{
        $("#loading_icon").hide()
        if (data.code === 200) {
            $("#total").show().children('span').html(data.data.total_price)
        } else {
            layer.alert(data.message);
        }
    })
}

/**
 * 批量处理小程序
 * 
 * @author dotdotdot
 * 
 * @param array $app_ids    app_ids
 * @param string $task_method 执行方法
 * @param array $task_data 请求参数
 * 
 * @return int      code     状态码
 * @return string   msg      状态信息
 * 
 */
function batchTask({app_ids,task_method,task_data},mask){
    formReloadAjax('/admin/OpenWeixin/postBatchTask',{app_ids,task_method,task_data},mask)
}
/**
 * 请求后并刷新
 * @method reloadAjax
 * @param {String} url 请求地址
 * @param {Object} formData 请求参数
 */
function reloadAjax(url,formData,tips='确认执行此操作吗？'){
    layui.use('table', function () {
        layer.confirm(tips, function () {
            layerMasks = parent.layer.load(1, {
                shade: [0.4,'#000']
            });
            Ajax(url,formData).then(data =>{
                parent.layer.close(layerMasks)
                if (data.code === 200) {
                    layer.msg(data.message, {
                        icon: 6,
                        time: 1000 
                    });
                }
            });
        });
        
    })
    
}